# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Jobs.V3.Model.CustomAttribute do
  @moduledoc """
  Custom attribute values that are either filterable or non-filterable.

  ## Attributes

  *   `filterable` (*type:* `boolean()`, *default:* `nil`) - Optional. If the `filterable` flag is true, the custom field values may be used for custom attribute filters JobQuery.custom_attribute_filter. If false, these values may not be used for custom attribute filters. Default is false.
  *   `longValues` (*type:* `list(String.t)`, *default:* `nil`) - Optional but exactly one of string_values or long_values must be specified. This field is used to perform number range search. (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`. Currently at most 1 long_values is supported.
  *   `stringValues` (*type:* `list(String.t)`, *default:* `nil`) - Optional but exactly one of string_values or long_values must be specified. This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or `CASE_INSENSITIVE_MATCH`) search. For filterable `string_value`s, a maximum total number of 200 values is allowed, with each `string_value` has a byte size of no more than 500B. For unfilterable `string_values`, the maximum total byte size of unfilterable `string_values` is 50KB. Empty string is not allowed.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :filterable => boolean() | nil,
          :longValues => list(String.t()) | nil,
          :stringValues => list(String.t()) | nil
        }

  field(:filterable)
  field(:longValues, type: :list)
  field(:stringValues, type: :list)
end

defimpl Poison.Decoder, for: GoogleApi.Jobs.V3.Model.CustomAttribute do
  def decode(value, options) do
    GoogleApi.Jobs.V3.Model.CustomAttribute.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Jobs.V3.Model.CustomAttribute do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
